package org.example.config;


import lombok.extern.slf4j.Slf4j;
import org.example.base.ResponseResult;
import org.example.exception.AppException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
@Slf4j
public class AppExceptionAdvice {

    @ExceptionHandler(AppException.class)
    @ResponseBody
    public Object handleAppException(AppException e){
        ResponseResult res = new ResponseResult();
//        res.setSuccess();//new 出来就默认是false
        res.setCode(e.getCode());//code从异常对象里面拿出来，然后设置到返回的JSON字符串里面
        res.setMessage(e.getMessage());
        log.debug("自定义异常",e);
        return res;
    }

    //问：Exception包含 RuntimeException嘛？
    //1.RuntimeException是运行时异常，编译时可以不处理，也属于Exception
    //2.自定义异常如果继承Exception就是编译时候的异常，
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Object handleAppException(Exception e){
        ResponseResult res = new ResponseResult();
//        res.setSuccess();//new 出来就默认是false
        res.setCode("SYS000");//code从异常对象里面拿出来，然后设置到返回的JSON字符串里面
        res.setMessage("系统出错：请联系管理员");
        log.error("出错啦",e);
        return res;
    }
}
